package com.bigzero.workflow.modules.system.service;

import com.bigzero.workflow.common.model.Route;
import com.bigzero.workflow.common.model.TokenAuthInfo;
import com.bigzero.workflow.common.model.TokenInfo;
import com.bigzero.workflow.common.model.UserPermInfo;
import com.bigzero.workflow.modules.system.vo.MenuVo;

import java.util.List;

/**
 * 用户缓存service接口
 *
 * @author fanxinxiong
 * @since 2025-02-10
 */
public interface UserCacheService {

    /**
     * 根据用户编码获取用户权限信息
     * @param tokenInfo 用户token信息
     * @return UserPermInfo
     */
    UserPermInfo getUserPermInfoByTokenInfo(TokenInfo tokenInfo);

    /**
     * 解析token
     * @param token token信息
     * @return TokenInfo
     */
    TokenInfo getTokenInfo(String token);

    /**
     * 根据用户认证信息获取目录vo集合
     * @param tokenAuthInfo token认证信息
     * @return List<MenuVo>
     */
    List<MenuVo> getDirectoryVoListByTokenAuthInfo(TokenAuthInfo tokenAuthInfo);

    /**
     * 根据用户认证信息获取菜单vo集合
     * @param tokenAuthInfo token认证信息
     * @param parentId 父id
     * @return List<MenuVo>
     */
    List<MenuVo> getMenuVoListByTokenAuthInfo(TokenAuthInfo tokenAuthInfo, String parentId);

    /**
     * 根据token认证获取权限标识集合
     * @param tokenAuthInfo
     * @return List<String>
     */
    List<String> getPermsListByTokenAuthInfo(TokenAuthInfo tokenAuthInfo);

    /**
     * 根据用户认证信息获取路由集合
     * @param tokenAuthInfo token认证信息
     * @return List<RouteVo>
     */
    List<Route> getRouteListByTokenAuthInfo(TokenAuthInfo tokenAuthInfo);

}
